#include <iostream>
#include <signal.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>

using namespace std;

int main()
{
    signal(2, SIG_DFL);
    while(1)
    {
        cout << "hello signal" << endl;
        sleep(1);
    }
    return 0;
}

// int main()
// {
//     int a = 10;
//     int b =0;
    
//     a /= b;

//     cout << "a = " << a << endl;


//     // pid_t id = fork();
//     // if (id == 0)
//     // {
//     //     int cnt = 500;
//     //     while (cnt)
//     //     {
//     //         cout << "I am a chid process, pid: " << getpid() << "cnt: " << cnt << endl;
//     //         sleep(1);
//     //         cnt--;
//     //     }

//     //     exit(0);
//     // }

//     // int status = 0;
//     // pid_t rid = waitpid(id, &status, 0);
//     // if(rid == id)
//     // {
//     //     cout << "child quit info, rid: " << rid << " exit code: " << ((status>>8)&0xFF) 
//     //         << " exit signal: " << (status&0x7F) << " core dump: " << ((status>>7)&1) << endl;
//     // }
// }

// void work()
// {
//     cout << "print log ..." << endl;
// }

// void handler(int signo)
// {
//     //work();
//     cout << "get a signal, number: " << signo << endl;
//     int n = alarm(5);
//     cout << "剩余时间: " << n << endl;
//     //exit(1);
// }

// int main()
// {
//     // signal(SIGALRM, handler);
//     // int n = alarm(50);
//     // while(1)
//     // {
//     //     cout << "proc is running..., pid: " << getpid() << endl;
//     //     sleep(1);
//     // }

//     // signal(SIGSEGV, handler);
//     // cout << "point error before" << endl;
//     // sleep(1);
//     // int a = 10;
//     // a /= 0;
//     // int* p = nullptr;
//     // *p = 10;
//     // int n = 1024;
//     // char buffer[1024];
//     // n = read(4, buffer, n);
//     // printf("n = %d\n",n);
//     // perror("read");
//     // cout << "point error after" << endl;
//     // sleep(1);
//     return 0;
// }